package com.redpack.redpost.util.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.redpack.redpost.connection.RedpostConexion;

import com.redpack.redpost.util.to.*;


public class FolioServicioDao {

	
	
public static FolioServicioTo getFolioActual( int cve_servicio )throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;
		FolioServicioTo folio = new FolioServicioTo(); 
		
		String sql = "" ;
		
		try{			
			
			if(cve_servicio == 1){
				
				sql = "select * from  redpost.TBL_FOLIO_ECOEXPRESS order by cve_folio desc limit 1;" ;
			}
			if(cve_servicio == 2){
				
				sql = "select * from  redpost.TBL_FOLIO_EXPRESS order by CVE_FOLIO_EX desc limit 1;" ;
			}
			
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();

			
			
			while (rs.next()) {
				folio.setCve_folio(rs.getInt(1));
				folio.setFolio_secuencia(rs.getInt(2));
				folio.setStatus(rs.getInt(3));
				
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return folio ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return folio ;
		} finally {
            if (conn != null) {
                conn.close();
            }
			
		}
		
	}

public static boolean saveFolioSiguiente(int cve_servicio,int FolioSiguiente)throws Exception {
	
	Connection conn = RedpostConexion.openConnection( ) ;
	conn.setAutoCommit( false ) ;
	PreparedStatement ps = null ;
	boolean res = false ;
	String sql = "" ;
	
	try{			
		
		if(cve_servicio == 1){
			
			sql = "INSERT INTO redpost.tbl_folio_ecoexpress(folio_secuencia, status) VALUES ("+ FolioSiguiente +",1);";
		}
		if(cve_servicio == 2){
			
			sql = "INSERT INTO redpost.TBL_FOLIO_EXPRESS(folio_secuencia, status) VALUES ("+ FolioSiguiente +",1);";
		}
		
		
		ps = conn.prepareStatement( sql ) ;
		ps.execute( ) ;

		res = true ;
		
		conn.commit( ) ;
		ps.close( ) ;
		conn.close( ) ;
		
		return res ;
		
	}catch ( Exception e ) {
		e.printStackTrace( ) ;			
		return res ;
	} finally {
        if (conn != null) {
            conn.close();
        }
		
	}
	
}


public static FolioSecuenciaServicioTo getFolioSecuencia(int cve_servicio)throws Exception {
	
	Connection conn = RedpostConexion.openConnection( ) ;
	FolioSecuenciaServicioTo FolioSecuencia = new FolioSecuenciaServicioTo();
	conn.setAutoCommit( false ) ;
	PreparedStatement ps = null ;
	ResultSet rs = null ;
	String sql = "" ;
	boolean res = false ;
	
	try{			
		
		sql = "select * from redpost.TBL_FOLIO_SECUENCIA_SERVICIO where CVE_SERVICIO="+ cve_servicio +" and estado='EnUso' ;" ;
		ps = conn.prepareStatement( sql ) ;
		rs = ps.executeQuery();
		
		while (rs.next()) {
			
			FolioSecuencia.setCve_servicio(rs.getInt("cve_servicio"));
			FolioSecuencia.setCve_folio_sec(rs.getInt("cve_folio_sec"));
			FolioSecuencia.setLimite_inferior(rs.getInt("limite_inferior"));
			FolioSecuencia.setLimite_superior(rs.getInt("limite_superior"));
			FolioSecuencia.setStatus(rs.getInt("status"));
		
		}
	
		if( FolioSecuencia.getCve_folio_sec( ) == 0 ){
			
			sql = "select * from redpost.TBL_FOLIO_SECUENCIA_SERVICIO where CVE_SERVICIO="+ cve_servicio +" and estado='Activo'" +
					" order by cve_folio_sec limit 1 ;" ;
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();
			
			if( rs.next( ) ){
				FolioSecuenciaServicioTo fTo = new FolioSecuenciaServicioTo( ) ;
				fTo.setCve_servicio(rs.getInt("cve_servicio"));
				fTo.setCve_folio_sec(rs.getInt("cve_folio_sec"));
				fTo.setLimite_inferior(rs.getInt("limite_inferior"));
				fTo.setLimite_superior(rs.getInt("limite_superior"));
				fTo.setStatus(rs.getInt("status"));
				
				sql = "UPDATE redpost.tbl_folio_secuencia_servicio SET estado='EnUso' " +
						"WHERE cve_folio_sec="+ fTo.getCve_folio_sec( ) +" ;" ;
				ps = conn.prepareStatement( sql ) ;
				ps.execute( ) ;
			}
			
			sql = "select * from redpost.TBL_FOLIO_SECUENCIA_SERVICIO where CVE_SERVICIO="+ cve_servicio +" and estado='EnUso' ;" ;
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();
			
			while (rs.next()) {
				
				FolioSecuencia.setCve_servicio(rs.getInt("cve_servicio"));
				FolioSecuencia.setCve_folio_sec(rs.getInt("cve_folio_sec"));
				FolioSecuencia.setLimite_inferior(rs.getInt("limite_inferior"));
				FolioSecuencia.setLimite_superior(rs.getInt("limite_superior"));
				FolioSecuencia.setStatus(rs.getInt("status"));
			
			}
			
		}
				
		conn.commit( ) ;
		ps.close( ) ;
		conn.close( ) ;
		
		return FolioSecuencia ;
		
	}catch ( Exception e ) {
		e.printStackTrace( ) ;
		return FolioSecuencia = null ;
	} finally {
        if (conn != null) {
            conn.close();
        }
		
	}
	
}



public static boolean saveFolioSecuenciaServicio(FolioSecuenciaServicioTo _FolioSecuencia)throws Exception {
	
	boolean res = false ;
	Connection conn = null;
	try
	{	
		conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		
		String sql = "" ;
			
		sql += "UPDATE redpost.TBL_FOLIO_SECUENCIA_SERVICIO ";
		sql += " SET ";
		sql += " LIMITE_INFERIOR="+ _FolioSecuencia.getLimite_inferior(); 
		sql += " ,LIMITE_SUPERIOR="+ _FolioSecuencia.getLimite_superior();
		sql += " WHERE cve_servicio="+ _FolioSecuencia.getCve_servicio();
		sql += " ;";
		
			
			ps = conn.prepareStatement( sql ) ;
			ps.execute( ) ;

			res = true ;
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return res ;
			
		}
		catch ( Exception e ) 
		{
			e.printStackTrace( ) ;			
			return res ;
		} 
		finally 
		{
            if (conn != null) 
            {
                conn.close();
            }
		}
		
}


public static boolean terminaRango( int cve_servicio )throws Exception {
	
	boolean res = false ;
	Connection conn = null;
	try
	{	
		conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		
		String sql = "" ;
			
		sql += "UPDATE redpost.tbl_folio_secuencia_servicio " +
				"SET estado='Terminado' " +
				"WHERE CVE_SERVICIO="+ cve_servicio +" and estado='EnUso'";
		
			
			ps = conn.prepareStatement( sql ) ;
			ps.execute( ) ;

			res = true ;
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return res ;
			
		}
		catch ( Exception e ) 
		{
			e.printStackTrace( ) ;			
			return res ;
		} 
		finally 
		{
            if (conn != null) 
            {
                conn.close();
            }
		}
		
}



}